home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / ivl / src / iocs_add.h < prev    next >
Text File  |  1999-03-20  |  2KB  |  97 lines

  1. #if    !defined(IOCS_ADD_H_HAS_INCLUDED)
  2. #define    IOCS_ADD_H_HAS_INCLUDED
  3. /*
  4. *    何となく必要な IOCS コール関数の追加提供ヘッダ
  5. *
  6. *謝辞:    大部分のコードは、"sys\iocs_i.h"(by project LIBC Group)から
  7. *    持ってきて、ここで修正したものです。感謝。
  8. *
  9. *    by dummy.x.    from Nov.14,1998
  10. */
  11. #if    !defined(__cdecl_h__)
  12. #include <cdecl.h>
  13. #endif    /* !defined(__cdecl_h__) */
  14.  
  15. #if !defined (__GNUC__) && !defined (__GNUG__)
  16. #error You lose. This file can be compiled only by GNU-C compiler.
  17. #endif
  18.  
  19.  
  20. /* inline アセンブラ関数定義 */
  21.  
  22. /* ソフトキーボード消去
  23. *    返値:    消去前の表示状態(=0:表示していなかった/=1:表示していた)
  24. */
  25. static __inline int_ _iocs_skey_off(void_)
  26. {
  27.     register unsigned int_ reg_d0 __asm ("d0");
  28.  
  29.     __asm __volatile ("moveq.l #0,d1\n\t"
  30.               "moveq.l #__SKEY_MOD,%0\n\t"
  31.               "trap #15"
  32.             : "=d" (reg_d0)
  33.             : /* no inputs */
  34.             : "d1"
  35.     );
  36.     return reg_d0;
  37. }
  38.  
  39. /* ソフトキーボード表示
  40. *    引数:    x,y    - 表示座標(共に下位ワードのみ有効)
  41. *    返値:    表示前の表示状態(=0:表示していなかった/=1:表示していた)
  42. */
  43. static __inline int_ _iocs_skey_on(int_ x, int_ y)
  44. {
  45.     register unsigned int_ reg_d0 __asm ("d0");
  46.  
  47.     __asm __volatile ("move.l #1,d1\n\t"
  48.               "move.w %2,d2\n\t"
  49.               "swap.w d2\n\t"
  50.               "move.w %3,d2\n\t"
  51.               "moveq.l #__SKEY_MOD,%0\n\t"
  52.               "trap #15"
  53.             : "=d" (reg_d0)
  54.             : "ri" ((short) x), "ri" ((short) y)
  55.             : "d1", "d2"
  56.     );
  57.     return reg_d0;
  58. }
  59.  
  60. /* ソフトキーボードの表示状態を調べる
  61. *    返値:    現在の表示状態(=0:表示している/=1:いない)
  62. */
  63. static __inline int_ _iocs_skey_chk(void_)
  64. {
  65.     register unsigned int_ reg_d0 __asm ("d0");
  66.  
  67.     __asm __volatile ("moveq.l #2,d1\n\t"
  68.               "moveq.l #__SKEY_MOD,%0\n\t"
  69.               "trap #15"
  70.             : "=d" (reg_d0)
  71.             : /* no inputs */
  72.             : "d1"
  73.     );
  74.     return reg_d0;
  75. }
  76.  
  77. /* ソフトキーボードを自動制御(マウス右ボタンによる制御)に戻す
  78. *    返値:    現在の表示状態(=0:表示している/=1:いない)
  79. */
  80. static __inline int_ _iocs_skey_reset(void_)
  81. {
  82.     register unsigned int_ reg_d0 __asm ("d0");
  83.  
  84.     __asm __volatile ("moveq.l #-1,d1\n\t"
  85.               "moveq.l #__SKEY_MOD,%0\n\t"
  86.               "trap #15"
  87.             : "=d" (reg_d0)
  88.             : /* no inputs */
  89.             : "d1");
  90.     return reg_d0;
  91. }
  92.  
  93. /* 関数偽名定義 */
  94. #define    _iocs_ms_curoff    _iocs_ms_curof
  95.  
  96. #endif    /* !defined(IOCS_ADD_H_HAS_INCLUDED) */
  97.